package dto

import "time"

// SignInResp 签到响应
type SignInResp struct {
	RedPacketAmount float64 `json:"red_packet_amount"` // 获得红包金额
	ContinuousDays  int     `json:"continuous_days"`   // 连续签到天数
}

// SignInStatusResp 签到状态响应
type SignInStatusResp struct {
	HasSignedToday bool            `json:"has_signed_today"`  // 今日是否已签到
	ContinuousDays int             `json:"continuous_days"`   // 连续签到天数
	LastSignInDate time.Time       `json:"last_sign_in_date"` // 最后签到日期
	TodayRule      *SignInRuleInfo `json:"today_rule"`        // 今日签到规则
}

// SignInRuleInfo 签到规则信息
type SignInRuleInfo struct {
	MinAmount      float64 `json:"min_amount"`      // 最小红包金额
	MaxAmount      float64 `json:"max_amount"`      // 最大红包金额
	ExtraAmount    float64 `json:"extra_amount"`    // 额外奖励金额
	ContinuousDays int     `json:"continuous_days"` // 连续签到天数
}

// ListSignInRecordReq 签到记录列表请求
type ListSignInRecordReq struct {
	Page     int `form:"page" binding:"required,min=1"`             // 页码
	PageSize int `form:"page_size" binding:"required,min=1,max=50"` // 每页大小
}

// SignInRecordItem 签到记录项
type SignInRecordItem struct {
	Id              int64     `json:"id"`                // 记录ID
	SignDate        time.Time `json:"sign_date"`         // 签到日期
	ContinuousDays  int       `json:"continuous_days"`   // 连续签到天数
	RedPacketAmount float64   `json:"red_packet_amount"` // 获得红包金额
	CreateTime      time.Time `json:"create_time"`       // 创建时间
}

// ListSignInRecordResp 签到记录列表响应
type ListSignInRecordResp struct {
	Total    int64              `json:"total"`     // 总数
	List     []SignInRecordItem `json:"list"`      // 记录列表
	Page     int                `json:"page"`      // 当前页码
	PageSize int                `json:"page_size"` // 每页大小
}
